/**
Metamorfose is an interactive ecosystem, which uses computer vision
and sound analysis to define its basic rules.
Copyright (C) 2008  laboratorio (info@laboratorio.us)

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

class Animation {
  PImage[] birthFrames;
  PImage[] loopFrames;
  PImage[] dieFrames;
  PImage[] morphFrames; 
  String birthPath, loopPath, diePath;
  int framecount;
  
  /**
   * Class constructor
   *
   * @param path  location of the images on filesystem 
   * @param nframes  the number of images to be loaded
   */  
  Animation(String path, int nframes)
  {
    String base = "sprites/";
    birthPath = base + path + "/birthing/";
    loopPath = base + path + "/looping/";
    diePath = base + path + "/dying/";
    framecount = nframes;
    birthFrames = new PImage[framecount];
    loopFrames = new PImage[framecount];
    dieFrames = new PImage[framecount];
    loadImages();
  }

  /**
   * Loads images from filesystem
   */
  void loadImages()
  {
    for (int i=0;i<framecount;i++) {
      birthFrames[i] = loadImage(birthPath + zerofill(i) + ".png");
      loopFrames[i] = loadImage(loopPath + zerofill(i) + ".png");
      dieFrames[i] = loadImage(diePath + zerofill(i) + ".png");
    }
  }

  /**
   * Returns a given number as a string filled with zeros
   */  
  String zerofill(int number)
  {
    if (number <= 9) {
      return "00" + str(number);
    } else if (number >= 10 && number <= 99) {
      return "0" + str(number);
    } else {
      return str(number);
    }
  } 
}